package com.fjwt.gz.service.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fjwt.gz.db.dto.ActivityDTO;
import com.fjwt.gz.db.dto.ActivityListDTO;
import com.fjwt.gz.db.dto.AwardAgentSearchParams;
import com.fjwt.gz.db.entity.ActivityEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fjwt.gz.db.entity.MchChannelEntity;
import com.fjwt.gz.db.vo.ActivityListVO;
import com.fjwt.gz.db.vo.ActivityAndCouponVO;
import com.fjwt.gz.db.vo.ActivityVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 营销活动信息表 Mapper 接口
 * </p>
 *
 * @author shiyonghao
 * @since 2025-04-09
 */
public interface ActivityMapper extends BaseMapper<ActivityEntity> {


    /**
     * 导出可核销用户数据
     * @param awardId 卡券ID
     * @return
     */
    List<MchChannelEntity> selectByAwardId(@Param("awardId") Long awardId);

    IPage<ActivityVO> queryListByPcInfo(IPage page, @Param("activityDTO") ActivityDTO activityDTO);


    /**
     * 查询扫码派券活动
     * @return
     */
    List<ActivityAndCouponVO> querySendToMchUserActivityList(@Param("params") AwardAgentSearchParams params);

    /**
     * 查询扫码派券无限制下级活动
     * @return
     */
    List<ActivityAndCouponVO> querySendToMchUserNoLimitActivityList(@Param("params") AwardAgentSearchParams params);

    /**
     * 活动列表
     * @param activityListDTO
     * @return
     */
    List<ActivityListVO> queryList(@Param("activityListDTO") ActivityListDTO activityListDTO);


    /**
     * 查询活动列表
     * @param iPage
     * @param agentNo
     * @param groupNo
     * @return
     */
    IPage<ActivityVO> getGroupActivityList(IPage iPage,@Param("agentNo") String agentNo, @Param("groupNo") String groupNo);

    /**
     * 查询活动详情
     * @param activityId
     * @return
     */
    ActivityVO getActivityDetail(@Param("activityId") Long activityId);


    /**
     * 商户渠道所关联的活动
     * @param channelCode
     * @return
     */
    List<ActivityEntity> selectActivityList(@Param("channelCode")String channelCode);
    /**
     * 商户渠道所关联的活动  -- 机构员工渠道码
     * @param channelCode
     * @return
     */
    List<ActivityEntity> selectActivityListByEmployee(@Param("channelCode")String channelCode);
    /**
     * 商户渠道所关联的活动  -- 机构网点渠道码
     * @param channelCode
     * @return
     */
    List<ActivityEntity> selectActivityListByAgent(@Param("channelCode")String channelCode);

    /**
     * 查询017 正在运行 remark = B1 的奖品ID
     * @return
     */
    List<Map<String, Object>> findActivityAwardId();

    /**
     * 根据奖品ID 获取奖品信息
     * @param awardId
     * @return
     */
    ActivityVO findActivityNameByAwardId(@Param("awardId") Long awardId);

    Map selectActivitys(@Param("activityId") String activityId);

    /**
     * 获取当前活动-已结束活动
     * @param iPage
     * @param agentNos
     * @param flag
     * @return
     */
    IPage<ActivityVO> getActivityList(IPage iPage, @Param("agentNos") List<String> agentNos,  @Param("flag") String flag);

    /**
     * 获取商户所关联的活动
     * @param iPage
     * @param mchNo
     * @param state
     * @return
     */
    IPage<ActivityEntity> fansGetActivityByMchNo(IPage iPage, @Param("mchNo") String mchNo, @Param("state")Integer state);

}
